//
//  MTPopMenu.swift
//  MTPopMenuDemo
//
//  Created by GT-iOS on 2018/6/6.
//  Copyright © 2018年 GT-iOS. All rights reserved.
//

import UIKit
class MTPopMenu: UIView {
    /// 标题数组 只读
    private(set) var titles: [String]?
    
    /// 图片数组 只读
    private(set) var images: [String]?
    
    /// 圆角半径 Default is 5.0
    var cornerRadius: Float = 5.0
    
    /// 自定义圆角 Default is UIRectCornerAllCorners, 当自动调整方向时corner会自动转换至镜像方向
    var rectCorner: UIRectCorner = .allCorners
    
    /// 是否显示阴影
    var isShowShadow: Bool = true
    
    /// 是否显示灰色覆盖层
    var showMaskView: Bool = true
    
    /// 选择菜单项后消失
    var dismissOnSelected: Bool = true
    
    /// 点击菜单外消失
    var dismissOnTouchOutside: Bool = true
    
    /// 设置字体大小, 自定义cell时忽略
    var fontSize = 15.0
    
    /// 设置字体颜色 自定义cell时忽略
    var textColor: UIColor = UIColor.black
    
    /// 设置水平方向偏移距离
    var offsetX = 0.0
    
    /// 设置竖直方向偏移距离
    var offsetY = 0.0
    
    /// 边框宽度
    var borderWidth = 0.0
    
    /// 边框颜色,默认白色
    var borderColor = UIColor.white
    
    /// 箭头宽度
    var arrowWidth = 15.0
    
    /// 箭头高度
    var arrowHeight = 10.0
    
    /// 箭头位置
    
    /// 箭头方向
    var arrowDirection: MTPopMenuArrowDirection = .top
    /// 箭头优先方向, 当控件超出屏幕时会自动调整箭头位置
    var priorityDirection: MTPopMenuPriorityDirection = .top
    
    /// 可见的最大行数
    var maxVisibleCount = 5;
    
    /// menu背景色 自定义cell时忽略
    var backColor = UIColor.white
    
    /// item的高度
    var itemHeight = 44.0
    
    /// Menu距离最近的Screen的距离
    var minSpace = 10.0
    
    /// 设置显示模式 自定义cell时忽略
    var type: MTPopMenuType = .default
    
    /// 代理
    var delegate: MTPopMenuDelegate?
    
    /// tableView
    private lazy var tableView: UITableView = {
        let tableView = UITableView(frame: .zero, style: .plain)
        tableView.backgroundColor = UIColor.clear
        tableView.tableFooterView = UIView()
        tableView.delegate = self;
        tableView.dataSource = self;
        tableView.separatorStyle = .none
        return tableView
    }()
    
}

// MARK: - UITableViewDelegate, UITableViewDataSource
extension MTPopMenu: UITableViewDelegate, UITableViewDataSource {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 0
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        return UITableViewCell()
    }
}


protocol MTPopMenuDelegate {
    func didSelectedItem(index: Int, popMenu: MTPopMenu)
}


/// 箭头方向
enum MTPopMenuArrowDirection {
    case top, bottom, left, right
    case none //没有箭头
}

/// 箭头优先方向
enum MTPopMenuPriorityDirection {
    case top, bottom, left, right
    case none //不自动调整
}

/// 显示模式
enum MTPopMenuType {
    case `default`, dark
}



